package Chapter23.reflectiion.class_;

import Chapter23.Car;

import java.lang.reflect.Field;

/**
 * @author 杨森
 * @date 2022年11月13日 15:16
 * 演示Class类的常用方法
 */
public class Class02 {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchFieldException {
        String classAllPath="Chapter23.Car";
        //获取到Car类，对应的Class对象
        //<?>表示不确定的Java类型
        Class< ? > cls=Class.forName(classAllPath);
        //输出cls
        System.out.println(cls);//显示cls对象，是哪个类的Class对象
        //得到包名
        System.out.println(cls.getPackage().getName());
        //得到全类名
        System.out.println(cls.getName());
        //通过cls创建对象实例
        Car car =(Car)cls.newInstance();
        System.out.println(car);
        //通过反射得到属性brand
        Field brand = cls.getField("brand");
        System.out.println(brand.get(car));
        //通过反射给属性赋值
        brand.set(car,"奔驰");
        System.out.println(brand.get(car));
        //得到所有的数学（字段）
        Field[] fields = cls.getFields();
        for (Field f :fields) {
            System.out.println(f.getName());
        }

    }


}
